﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using EntidadesCompartidas;
using System.Data.SqlClient;
using System.Data;

using Persistencia.Properties;

namespace Persistencia.Datos
{
    public class PersLuz:Interfaces.IPersLuz
    {
        //Elementos que determinan el singleton
        //1- Atributo de Clase
        private static PersLuz _miPersistenciaLuz = null;
        //2- Constructor
        private PersLuz() { }
        //3- Metodo de Clase
        public static PersLuz GetLuz()
        {
            if (_miPersistenciaLuz == null)
            {
                _miPersistenciaLuz = new PersLuz();
            }
            return _miPersistenciaLuz;

        }
        /////////////////////////////////////////////////////////////////////////////////////////////

        #region Miembros de IPersLuz

        public Luz BuscarLuz(int pId)
        {   //int id, bool estado, decimal ejex, decimal ejey, EntidadesCompartidas.Plano elPlano
            bool _estado;
            decimal _X;
            decimal _Y;
            
            Luz _laLuz = null;

            SqlConnection _conexion = new SqlConnection(Settings.Default.dbSmartHouseConnectionString);
            string consulta = "select * from Luces where Id = " + pId + "and EliminacionLogica = 1";
            SqlCommand _comando = new SqlCommand(consulta, _conexion);

            SqlDataReader _lector;

            try
            {
                _conexion.Open();
                _lector = _comando.ExecuteReader();
                if (_lector.Read())
                {
                    _estado = (bool)_lector["Estado"];
                    _X = (decimal)_lector["EjeX"];
                    _Y = (decimal)_lector["EjeY"];
                    _laLuz = new Luz(pId, _estado, _X, _Y);
                }
                _lector.Close();

            }
            catch (Exception ex)
            {
                throw new ApplicationException("Problemas con la base de datos:" + ex.Message);
            }
            finally
            {
                _conexion.Close();
            }
            return _laLuz;
        }
        //-----------------------------------------------------------------------
        public int OnOffLuz(Luz pLuz)
        {
            SqlConnection _conexion = new SqlConnection(Settings.Default.dbSmartHouseConnectionString);
            string consulta = "";
            if(pLuz.Estado == true)
                   consulta = "Update Luces SET Estado= "+ 0 +" where Id= " + pLuz.Id + " and EliminacionLogica = 1";
            else
                consulta = "Update Luces SET Estado= " + 1 + " where Id= " + pLuz.Id + " and EliminacionLogica = 1";
            SqlCommand _comando = new SqlCommand(consulta, _conexion);
            int _afectados = -1;
            try
            {
                _conexion.Open();
                _afectados = _comando.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw new ApplicationException("Problemas con la base de datos:" + ex.Message);
            }
            finally
            {
                _conexion.Close();
            }

            return _afectados;
        }
        //-----------------------------------------------------------------------
       
        #endregion
    }
}
